<?php
class Clientes {
    
    private $codigo;
    private $nome;
    private $codigodoposto;
    private $bandeira;
    private $codmunicipio;
    private $estado;
    private $volume;
    private $nome_operador;
    private $telefone;
    private $contrato_vencimento;
    private $endereco;
    private $codusuario;
            
    function __construct($codigo=null, $nome=null, $codigodoposto=null, $bandeira=null, $codmunicipio=null, $estado=null, $volume=null, $nome_operador=null, $telefone=null, $contrato_vencimento=null, $endereco=null, $codusuario=null) {
        if($codigo === null){
            $this->setAtributos(0,'','','','','','','','','','','');
        }else if( ($codigo !== null) && ($codmunicipio === null) ){
            $this->Carrega($codigo);
        }else{
            $this->setAtributos($codigo, $nome, $codigodoposto, $bandeira, $codmunicipio, $estado, $volume, $nome_operador, $telefone, $contrato_vencimento, $endereco,$codusuario);
        }
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function setCodigo($codigo) {
        $this->codigo = $codigo;
        return $this;
    }

    
    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
        return $this;
    }

    public function getCodigodoposto() {
        return $this->codigodoposto;
    }

    public function setCodigodoposto($codigodoposto) {
        $this->codigodoposto = $codigodoposto;
        return $this;
    }

    public function getBandeira() {
        return $this->bandeira;
    }

    public function setBandeira($bandeira) {
        $this->bandeira = $bandeira;
        return $this;
    }

    public function getCodmunicipio() {
        return $this->codmunicipio;
    }

    public function setCodmunicipio($codmunicipio) {
        $this->codmunicipio = $codmunicipio;
        return $this;
    }

    public function getEstado() {
        return $this->estado;
    }

    public function setEstado($estado) {
        $this->estado = $estado;
        return $this;
    }
    
    public function getVolume() {
        return $this->volume;
    }

    public function setVolume($volume) {
        $this->volume = $volume;
        return $this;
    }

    public function getNome_operador() {
        return $this->nome_operador;
    }

    public function setNome_operador($nome_operador) {
        $this->nome_operador = $nome_operador;
        return $this;
    }

    public function getTelefone() {
        return $this->telefone;
    }

    public function setTelefone($telefone) {
        $this->telefone = $telefone;
        return $this;
    }

    public function getContrato_vencimento() {
        return $this->contrato_vencimento;
    }

    public function setContrato_vencimento($contrato_vencimento) {
        $this->contrato_vencimento = $contrato_vencimento;
        return $this;
    }
    
    public function getEndereco() {
        return $this->endereco;
    }

    public function setEndereco($endereco) {
        $this->endereco = $endereco;
        return $this;
    }
    
    public function getCodusuario() {
        return $this->codusuario;
    }

    public function setCodusuario($codusuario) {
        $this->codusuario = $codusuario;
        return $this;
    }
    
    public function setAtributos($codigo=null,$nome=null,$codigoposto=null,$bandeira=null,$codmunicipio=null,$estado=null, $volume=null, $nome_operador=null, $telefone=null, $contrato_vencimento=null, $endereco=null, $codusuario=null){
        $this->setCodigo($codigo)
            ->setNome($nome)
            ->setCodigodoposto($codigoposto)
            ->setBandeira($bandeira)
            ->setCodmunicipio($codmunicipio)
            ->setEstado($estado)
            ->setVolume($volume)
            ->setNome_operador($nome_operador)
            ->setTelefone($telefone)
            ->setContrato_vencimento($contrato_vencimento)
            ->setEndereco($endereco)
            ->setCodusuario($codusuario);
    }
    
    public function Carrega($codigo){
        $conn = new DB_Config();
        $query = ("
            SELECT 
                codigo,
                nome,
                codigodoposto,
                bandeira,
                codmunicipio,
                estado,
                volume,
                nome_operador,
                telefone,
                contrato_vencimento,
                endereco,
                codusuario
            FROM 
                clientes
            WHERE
                codigo = '$codigo'
        ");
        list($codigo,$nome,$codigoposto,$bandeira,$codmunicipio,$estado,$volume,$nome_operador,$telefone,$contrato_vencimento,$endereco,$codusuario) = $conn->Query($query)->FetchRow();
        $this->setAtributos($codigo, $nome, $codigoposto, $bandeira, $codmunicipio, $estado,$volume,$nome_operador,$telefone,$contrato_vencimento,$endereco,$codusuario);
    }

    public function Adiciona(){
        $conn = new DB_Config();
	$query = ("
            INSERT INTO 
                clientes 
            SET 
                nome = '{$this->nome}', 
                codigodoposto = '{$this->codigodoposto}', 
                bandeira = '{$this->bandeira}', 
                codmunicipio = '{$this->codmunicipio}', 
                estado = 'A'
                ,volume='" . $this->volume . "'
                ,nome_operador='" . $this->nome_operador . "'
                ,telefone='" . $this->telefone . "'
                ,contrato_vencimento='" . $this->contrato_vencimento . "'
                ,endereco='" . $this->endereco . "'
                ,codusuario='" . $this->codusuario . "'
        ");
	if(!$conn->Query($query)){
            throw new Exception("Ocorreu um erro ao inserir o cliente!");
        }
        
    }
    
    public function Atualiza(){
        $conn = new DB_Config();
	$query = ("
            UPDATE 
                clientes 
            SET 
                nome = '{$this->nome}', 
                codigodoposto = '{$this->codigodoposto}', 
                bandeira = '{$this->bandeira}', 
                codmunicipio = '{$this->codmunicipio}', 
                estado = '{$this->estado}'
                ,volume='" . $this->volume . "'
                ,nome_operador='" . $this->nome_operador . "'
                ,telefone='" . $this->telefone . "'
                ,contrato_vencimento='" . $this->contrato_vencimento . "'
                ,endereco='" . $this->endereco . "'
                ,codusuario='" . $this->codusuario . "'
            WHERE
                codigo = '{$this->codigo}'
        ");
	if(!$conn->Query($query)){
            throw new Exception("Ocorreu um erro ao atualizar o cliente!");
        }
        
    }
    
    public function Remove(){
        $conn = new DB_Config();
        $query = ("DELETE FROM clientes WHERE codigo = '{$this->codigo}'");
        if(!$conn->Query($query)){
            throw new Exception("Ocorreu um erro ao remover o cliente!");
        }
    }
    
    public static function ListaClientes($extra=NULL){
        $lista = array();
        $conn = new DB_Config();
        $query = ("SELECT codigo FROM clientes ".$extra);
        $resultado = $conn->Query($query);
        while($dados = $resultado->FetchObject()){
            $lista[] = new Clientes($dados->codigo);
        }
        return $lista;
    }
    
    public static function ListaBandeira(){
        $lista = array();
        $conn = new DB_Config();
        $query = ("SELECT UPPER(bandeira) as bandeira FROM clientes GROUP BY LOWER(bandeira)");
        $resultado = $conn->Query($query);
        while($dados = $resultado->FetchObject()){
            $lista[] = $dados->bandeira;
        }
        return $lista;
    }
}
?>
